package com.loves.admin.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.time.LocalDateTime;

@TableName(value = "pms_product")
public class Product {
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;

    private String productCategoryId;

    private String name;

    private String pic;

    private String sn;

    private String attributeName;

    private Boolean publishStatus;

    private Boolean recommandStatus;

    private Boolean verifyStatus;

    private Integer sort;

    private Integer sale;

    private Integer price;

    private Integer promotionPrice;

    private String description;

    private Integer stock;

    private Integer lowStock;

    private String serviceIds;

    private Integer promotionPerLimit;

    private Integer promotionType;

    private String productCategoryName;

    private LocalDateTime createDate;

    private String createName;

    private Boolean deleteFlag;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getProductCategoryId() {
        return productCategoryId;
    }

    public void setProductCategoryId(String productCategoryId) {
        this.productCategoryId = productCategoryId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPic() {
        return pic;
    }

    public void setPic(String pic) {
        this.pic = pic;
    }

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public String getAttributeName() {
        return attributeName;
    }

    public void setAttributeName(String attributeName) {
        this.attributeName = attributeName;
    }

    public Boolean getPublishStatus() {
        return publishStatus;
    }

    public void setPublishStatus(Boolean publishStatus) {
        this.publishStatus = publishStatus;
    }

    public Boolean getRecommandStatus() {
        return recommandStatus;
    }

    public void setRecommandStatus(Boolean recommandStatus) {
        this.recommandStatus = recommandStatus;
    }

    public Boolean getVerifyStatus() {
        return verifyStatus;
    }

    public void setVerifyStatus(Boolean verifyStatus) {
        this.verifyStatus = verifyStatus;
    }

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    public Integer getSale() {
        return sale;
    }

    public void setSale(Integer sale) {
        this.sale = sale;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public Integer getPromotionPrice() {
        return promotionPrice;
    }

    public void setPromotionPrice(Integer promotionPrice) {
        this.promotionPrice = promotionPrice;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getStock() {
        return stock;
    }

    public void setStock(Integer stock) {
        this.stock = stock;
    }

    public Integer getLowStock() {
        return lowStock;
    }

    public void setLowStock(Integer lowStock) {
        this.lowStock = lowStock;
    }

    public String getServiceIds() {
        return serviceIds;
    }

    public void setServiceIds(String serviceIds) {
        this.serviceIds = serviceIds;
    }

    public Integer getPromotionPerLimit() {
        return promotionPerLimit;
    }

    public void setPromotionPerLimit(Integer promotionPerLimit) {
        this.promotionPerLimit = promotionPerLimit;
    }

    public Integer getPromotionType() {
        return promotionType;
    }

    public void setPromotionType(Integer promotionType) {
        this.promotionType = promotionType;
    }

    public String getProductCategoryName() {
        return productCategoryName;
    }

    public void setProductCategoryName(String productCategoryName) {
        this.productCategoryName = productCategoryName;
    }

    public LocalDateTime getCreateDate() {
        return createDate;
    }

    public void setCreateDate(LocalDateTime createDate) {
        this.createDate = createDate;
    }

    public String getCreateName() {
        return createName;
    }

    public void setCreateName(String createName) {
        this.createName = createName;
    }

    public Boolean getDeleteFlag() {
        return deleteFlag;
    }

    public void setDeleteFlag(Boolean deleteFlag) {
        this.deleteFlag = deleteFlag;
    }


    public static final class Builder {
        private String id;
        private String productCategoryId;
        private String name;
        private String pic;
        private String sn;
        private String attributeName;
        private Boolean publishStatus;
        private Boolean recommandStatus;
        private Boolean verifyStatus;
        private Integer sort;
        private Integer sale;
        private Integer price;
        private Integer promotionPrice;
        private String description;
        private Integer stock;
        private Integer lowStock;
        private String serviceIds;
        private Integer promotionPerLimit;
        private Integer promotionType;
        private String productCategoryName;
        private LocalDateTime createDate;
        private String createName;
        private Boolean deleteFlag;

        public Builder id(String id) {
            this.id = id;
            return this;
        }

        public Builder productCategoryId(String productCategoryId) {
            this.productCategoryId = productCategoryId;
            return this;
        }

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder pic(String pic) {
            this.pic = pic;
            return this;
        }

        public Builder sn(String sn) {
            this.sn = sn;
            return this;
        }

        public Builder attributeName(String attributeName) {
            this.attributeName = attributeName;
            return this;
        }

        public Builder publishStatus(Boolean publishStatus) {
            this.publishStatus = publishStatus;
            return this;
        }

        public Builder recommandStatus(Boolean recommandStatus) {
            this.recommandStatus = recommandStatus;
            return this;
        }

        public Builder verifyStatus(Boolean verifyStatus) {
            this.verifyStatus = verifyStatus;
            return this;
        }

        public Builder sort(Integer sort) {
            this.sort = sort;
            return this;
        }

        public Builder sale(Integer sale) {
            this.sale = sale;
            return this;
        }

        public Builder price(Integer price) {
            this.price = price;
            return this;
        }

        public Builder promotionPrice(Integer promotionPrice) {
            this.promotionPrice = promotionPrice;
            return this;
        }

        public Builder description(String description) {
            this.description = description;
            return this;
        }

        public Builder stock(Integer stock) {
            this.stock = stock;
            return this;
        }

        public Builder lowStock(Integer lowStock) {
            this.lowStock = lowStock;
            return this;
        }

        public Builder serviceIds(String serviceIds) {
            this.serviceIds = serviceIds;
            return this;
        }

        public Builder promotionPerLimit(Integer promotionPerLimit) {
            this.promotionPerLimit = promotionPerLimit;
            return this;
        }

        public Builder promotionType(Integer promotionType) {
            this.promotionType = promotionType;
            return this;
        }

        public Builder productCategoryName(String productCategoryName) {
            this.productCategoryName = productCategoryName;
            return this;
        }

        public Builder createDate(LocalDateTime createDate) {
            this.createDate = createDate;
            return this;
        }

        public Builder createName(String createName) {
            this.createName = createName;
            return this;
        }

        public Builder deleteFlag(Boolean deleteFlag) {
            this.deleteFlag = deleteFlag;
            return this;
        }

        public Product build() {
            Product product = new Product();
            product.setId(id);
            product.setProductCategoryId(productCategoryId);
            product.setName(name);
            product.setPic(pic);
            product.setSn(sn);
            product.setAttributeName(attributeName);
            product.setPublishStatus(publishStatus);
            product.setRecommandStatus(recommandStatus);
            product.setVerifyStatus(verifyStatus);
            product.setSort(sort);
            product.setSale(sale);
            product.setPrice(price);
            product.setPromotionPrice(promotionPrice);
            product.setDescription(description);
            product.setStock(stock);
            product.setLowStock(lowStock);
            product.setServiceIds(serviceIds);
            product.setPromotionPerLimit(promotionPerLimit);
            product.setPromotionType(promotionType);
            product.setProductCategoryName(productCategoryName);
            product.setCreateDate(createDate);
            product.setCreateName(createName);
            product.setDeleteFlag(deleteFlag);
            return product;
        }
    }
}
